#coding=utf-8
#!/usr/bin/python
"""
接受的对象类型按次序是 Python 文件对象(例如:sys.stdin 或者 open()或os.popen()返回的对象)
或者socket.socket()返回的socket对象。你也可以定义一个类，
只要它包含恰当的 fileno() 方法（它其实范围文件描述符，不要只是返回随机数）
注意：windows 不接受文件对象,但是接受 sockets。在 windows 下 select() 程序隐式使用 WinSock 库，
WinSock 并不支持文件对象句柄。


这个模块提供的 select() 和 poll() 方法可用于大部分操作系统。
注意：在 Windows 下，它只能用于 sockets ；在其他系统下，
它也可以用于其他类型（特别在 Unix 下，它还可以用于 管道）。
它不能用来确定是否完成上次的对普通文件执行的读取操作。



#     cd /d D:\python26 
#     python.exe D:\py\demo\sock_c.py

#       python.exe  .\dev_test\sock_c.py


# 交互式程序
username = raw_input('username:')
print username

"""
import os,sys,time

import select
#信号处理
import signal

def signal_do(signum, frame):
    u" 信号处理 "
    print "signal is ",signum
    print frame
    exit()

signal.signal(signal.SIGINT,signal_do)




if __name__ == '__main__':  

  
    
    #在 Windows 下，它只能用于 sockets 
    #--------非阻塞  使用 select
    #原型 select.select(rlist, wlist, elist[, timeout]) 三个list，包含三个已经准备好的fd(文件描述符)列表
    
    in_fd = sys.stdin.fileno()
    
    in_fds,out_fds,err_fds = select.select([0],[],[])
    #如果in_fds状态改变,进行处理,否则不予理会

            

    time.sleep(4)
    print __file__ ,':the end'
    sys.exit()
        